﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
//athour: Daniil Pintjuk
 namespace DanielsGameLibrary
{
    public class CKey
    {
        Keys KeyCode;
        bool Last;
        bool Current;

        public bool Pressed;
        public bool Released;
        public bool Hold;
        public bool Untouched;
        public bool Toggled = false;

        public CKey(Keys key)
        {
            KeyCode = key;
            Current = Last = Pressed
            = Released = false;
        }

        public void Update()
        {
            KeyboardState keybState = Keyboard.GetState();

            Last = Current;
            Current = keybState.IsKeyDown(KeyCode);
            Pressed = (Current && !Last);
            Released = (!Current && Last);
            Hold = (Current && Last);
            Untouched = (!Current && !Last);

            if (Pressed)
                Toggled = !Toggled;

        }
    }

    public enum MouseButtons
        {
            LeftButton,
            MiddleButton,
            RightButton,
            ExtraButton1,
            ExtraButton2
        }


    public class CMouseButton
    {
        MouseButtons KeyCode;
        bool Last;
        bool Current;

        public bool Pressed;
        public bool Released;
        public bool Hold;
        public bool Untouched;

        public CMouseButton(MouseButtons key)
        {
            KeyCode = key;
            Current = Last = Pressed
            = Released = false;
        }

        public void Update()
        {
       
        
            Last = Current;
            Current = IsDown(KeyCode);
            Pressed = (Current && !Last);
            Released = (!Current && Last);
            Hold = (Current && Last);
            Untouched = (!Current && !Last);
        }

        bool IsDown(MouseButtons button)
        {
            MouseState mouseState = Mouse.GetState();
            switch (button)
            {
                case MouseButtons.LeftButton:
                    return mouseState.LeftButton == ButtonState.Pressed;
                case MouseButtons.MiddleButton:
                    return mouseState.MiddleButton == ButtonState.Pressed;
                case MouseButtons.RightButton:
                    return mouseState.RightButton == ButtonState.Pressed;
                case MouseButtons.ExtraButton1:
                    return mouseState.XButton1 == ButtonState.Pressed;
                case MouseButtons.ExtraButton2:
                    return mouseState.XButton2 == ButtonState.Pressed;
                default:
                    return false;
            }
        }

    }

    public class CMouse
    {
        #region Fields
        public static CMouseButton  LeftButton = new CMouseButton(MouseButtons.LeftButton);
        public static CMouseButton  MiddleButton = new CMouseButton(MouseButtons.MiddleButton);
        public static CMouseButton  RightButton = new CMouseButton(MouseButtons.RightButton);
        public static CMouseButton  ExtraButton1 = new CMouseButton (MouseButtons.ExtraButton1);
        public static CMouseButton  ExtraButton2 = new CMouseButton (MouseButtons.ExtraButton2);

        public static Vector2 Position = new Vector2(0,0);
        public static Vector2 OldPosition = new Vector2(0, 0);
        public static Vector2 PositionDelta= new Vector2(0,0);
        public static float X;
        public static float Y;

        public static float ScrollWheelValue = 0;
        public static float OldScrollWheelValue = 0;
        public static float ScrollWheelDelta = 0;
        #endregion

        #region Update
        public static void Update()
        {
            LeftButton.Update(); 
            MiddleButton.Update(); 
            RightButton.Update(); 
            ExtraButton1.Update();
            ExtraButton2.Update();

            MouseState mouseState = Mouse.GetState();
        
            OldPosition = Position;
            Position = new Vector2(mouseState.X, mouseState.Y);
            PositionDelta = Position - OldPosition;
            X = Position.X;
            Y = Position.Y;

            OldScrollWheelValue = ScrollWheelValue;
            ScrollWheelValue = mouseState.ScrollWheelValue;
            ScrollWheelDelta = ScrollWheelValue - OldScrollWheelValue;

        }
        #endregion
    }

    public class CKeyBoard
    {
        #region keysinfo
        //KEY-DISCRIPTION
        //A 	A key
        //Add 	Add key
        //Apps 	Applications key
        //Attn 	Attn key
        //B 	B key
        //Back 	BACKSPACE key
        //BrowserBack 	Windows 2000/XP: Browser Back key
        //BrowserFavorites 	Windows 2000/XP: Browser Favorites key
        //BrowserForward 	Windows 2000/XP: Browser Forward key
        //BrowserHome 	Windows 2000/XP: Browser Start and Home key
        //BrowserRefresh 	Windows 2000/XP: Browser Refresh key
        //BrowserSearch 	Windows 2000/XP: Browser Search key
        //BrowserStop 	Windows 2000/XP: Browser Stop key
        //C 	C key
        //CapsLock 	CAPS LOCK key
        //ChatPadGreen 	Green ChatPad key
        //ChatPadOrange 	Orange ChatPad key
        //Crsel 	CrSel key
        //D 	D key
        //D0 	Used for miscellaneous characters; it can vary by keyboard.
        //D1 	Used for miscellaneous characters; it can vary by keyboard.
        //D2 	Used for miscellaneous characters; it can vary by keyboard.
        //D3 	Used for miscellaneous characters; it can vary by keyboard.
        //D4 	Used for miscellaneous characters; it can vary by keyboard.
        //D5 	Used for miscellaneous characters; it can vary by keyboard.
        //D6 	Used for miscellaneous characters; it can vary by keyboard.
        //D7 	Used for miscellaneous characters; it can vary by keyboard.
        //D8 	Used for miscellaneous characters; it can vary by keyboard.
        //D9 	Used for miscellaneous characters; it can vary by keyboard.
        //Decimal 	Decimal key
        //Delete 	DEL key
        //Divide 	Divide key
        //Down 	DOWN ARROW key
        //E 	E key
        //End 	END key
        //Enter 	ENTER key
        //EraseEof 	Erase EOF key
        //Escape 	ESC key
        //Execute 	EXECUTE key
        //Exsel 	ExSel key
        //F 	F key
        //F1 	F1 key
        //F10 	F10 key
        //F11 	F11 key
        //F12 	F12 key
        //F13 	F13 key
        //F14 	F14 key
        //F15 	F15 key
        //F16 	F16 key
        //F17 	F17 key
        //F18 	F18 key
        //F19 	F19 key
        //F2 	F2 key
        //F20 	F20 key
        //F21 	F21 key
        //F22 	F22 key
        //F23 	F23 key
        //F24 	F24 key
        //F3 	F3 key
        //F4 	F4 key
        //F5 	F5 key
        //F6 	F6 key
        //F7 	F7 key
        //F8 	F8 key
        //F9 	F9 key
        //G 	G key
        //H 	H key
        //Help 	HELP key
        //Home 	HOME key
        //I 	I key
        //ImeConvert 	IME Convert key
        //ImeNoConvert 	IME NoConvert key
        //Insert 	INS key
        //J 	J key
        //K 	K key
        //Kana 	Kana key on Japanese keyboards
        //Kanji 	Kanji key on Japanese keyboards
        //L 	L key
        //LaunchApplication1 	Windows 2000/XP: Start Application 1 key
        //LaunchApplication2 	Windows 2000/XP: Start Application 2 key
        //LaunchMail 	Windows 2000/XP: Start Mail key
        //Left 	LEFT ARROW key
        //LeftAlt 	Left ALT key
        //LeftControl 	Left CONTROL key
        //LeftShift 	Left SHIFT key
        //LeftWindows 	Left Windows key
        //M 	M key
        //MediaNextTrack 	Windows 2000/XP: Next Track key
        //MediaPlayPause 	Windows 2000/XP: Play/Pause Media key
        //MediaPreviousTrack 	Windows 2000/XP: Previous Track key
        //MediaStop 	Windows 2000/XP: Stop Media key
        //Multiply 	Multiply key
        //N 	N key
        //None 	Reserved
        //NumLock 	NUM LOCK key
        //NumPad0 	Numeric keypad 0 key
        //NumPad1 	Numeric keypad 1 key
        //NumPad2 	Numeric keypad 2 key
        //NumPad3 	Numeric keypad 3 key
        //NumPad4 	Numeric keypad 4 key
        //NumPad5 	Numeric keypad 5 key
        //NumPad6 	Numeric keypad 6 key
        //NumPad7 	Numeric keypad 7 key
        //NumPad8 	Numeric keypad 8 key
        //NumPad9 	Numeric keypad 9 key
        //O 	O key
        //Oem8 	Used for miscellaneous characters; it can vary by keyboard.
        //OemAuto 	OEM Auto key
        //OemBackslash 	Windows 2000/XP: The OEM angle bracket or backslash key on the RT 102 key keyboard
        //OemClear 	CLEAR key
        //OemCloseBrackets 	Windows 2000/XP: The OEM close bracket key on a US standard keyboard
        //OemComma 	Windows 2000/XP: For any country/region, the ',' key
        //OemCopy 	OEM Copy key
        //OemEnlW 	OEM Enlarge Window key
        //OemMinus 	Windows 2000/XP: For any country/region, the '-' key
        //OemOpenBrackets 	Windows 2000/XP: The OEM open bracket key on a US standard keyboard
        //OemPeriod 	Windows 2000/XP: For any country/region, the '.' key
        //OemPipe 	Windows 2000/XP: The OEM pipe key on a US standard keyboard
        //OemPlus 	Windows 2000/XP: For any country/region, the '+' key
        //OemQuestion 	Windows 2000/XP: The OEM question mark key on a US standard keyboard
        //OemQuotes 	Windows 2000/XP: The OEM singled/double quote key on a US standard keyboard
        //OemSemicolon 	Windows 2000/XP: The OEM Semicolon key on a US standard keyboard
        //OemTilde 	Windows 2000/XP: The OEM tilde key on a US standard keyboard
        //P 	P key
        //Pa1 	PA1 key
        //PageDown 	PAGE DOWN key
        //PageUp 	PAGE UP key
        //Pause 	PAUSE key
        //Play 	Play key
        //Print 	PRINT key
        //PrintScreen 	PRINT SCREEN key
        //ProcessKey 	Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
        //Q 	Q key
        //R 	R key
        //Right 	RIGHT ARROW key
        //RightAlt 	Right ALT key
        //RightControl 	Right CONTROL key
        //RightShift 	Right SHIFT key
        //RightWindows 	Right Windows key
        //S 	S key
        //Scroll 	SCROLL LOCK key
        //Select 	SELECT key
        //SelectMedia 	Windows 2000/XP: Select Media key
        //Separator 	Separator key
        //Sleep 	Computer Sleep key
        //Space 	SPACEBAR
        //Subtract 	Subtract key
        //T 	T key
        //Tab 	TAB key
        //U 	U key
        //Up 	UP ARROW key
        //V 	V key
        //VolumeDown 	Windows 2000/XP: Volume Down key
        //VolumeMute 	Windows 2000/XP: Volume Mute key
        //VolumeUp 	Windows 2000/XP: Volume Up key
        //W 	W key
        //X 	X key
        //Y 	Y key
        //Z 	Z key
        //Zoom 	Zoom key
        #endregion

        #region Fields
        public static CKey A = new  CKey(Keys.A);
        public static CKey Add = new  CKey(Keys.Add);
        public static CKey Attn = new  CKey(Keys.Attn);
        public static CKey Apps = new  CKey(Keys.Apps);
        public static CKey B = new  CKey(Keys.B);
        public static CKey Back = new  CKey(Keys.Back);
        public static CKey BrowserBack = new  CKey(Keys.BrowserBack);
        public static CKey BrowserFavorites = new  CKey(Keys.BrowserFavorites);
        public static CKey BrowserForward = new  CKey(Keys.BrowserForward);
        public static CKey BrowserHome = new  CKey(Keys.BrowserHome);
        public static CKey BrowserRefresh = new  CKey(Keys.BrowserRefresh);
        public static CKey BrowserSearch = new  CKey(Keys.BrowserSearch);
        public static CKey BrowserStop = new  CKey(Keys.BrowserStop);
        public static CKey C = new  CKey(Keys.C);
        public static CKey CapsLock = new  CKey(Keys.CapsLock);
        public static CKey ChatPadOrange = new  CKey(Keys.ChatPadOrange);
        public static CKey ChatPadGreen = new CKey(Keys.ChatPadGreen);
        public static CKey Crsel = new  CKey(Keys.Crsel);
        public static CKey D = new  CKey(Keys.D);
        public static CKey D0 = new  CKey(Keys.D0);
        public static CKey D1 = new  CKey(Keys.D1);
        public static CKey D2 = new  CKey(Keys.D2);
        public static CKey D3 = new  CKey(Keys.D3);
        public static CKey D4 = new  CKey(Keys.D4);
        public static CKey D5 = new  CKey(Keys.D5);
        public static CKey D6 = new  CKey(Keys.D6);
        public static CKey D7 = new CKey(Keys.D7);
        public static CKey D8 = new  CKey(Keys.D8);
        public static CKey D9 = new  CKey(Keys.D9);
        public static CKey Decimal = new  CKey(Keys.Decimal);
        public static CKey Delete = new  CKey(Keys.Delete);
        public static CKey Divide = new  CKey(Keys.Divide);
        public static CKey Down = new  CKey(Keys.Down);
        public static CKey E = new  CKey(Keys.E);
        public static CKey End = new  CKey(Keys.End);
        public static CKey Enter = new  CKey(Keys.Enter);
        public static CKey EraseEof = new  CKey(Keys.EraseEof);
        public static CKey Escape = new  CKey(Keys.Escape);
        public static CKey Execute = new  CKey(Keys.Execute);
        public static CKey Exsel = new  CKey(Keys.Exsel);
        public static CKey F = new  CKey(Keys.F);
        public static CKey F1 = new  CKey(Keys.F1);
        public static CKey F2 = new  CKey(Keys.F2);
        public static CKey F3 = new  CKey(Keys.F3);
        public static CKey F4 = new  CKey(Keys.F4);
        public static CKey F5 = new  CKey(Keys.F5);
        public static CKey F6 = new  CKey(Keys.F6);
        public static CKey F7 = new  CKey(Keys.F7);
        public static CKey F8 = new CKey(Keys.F8);
        public static CKey F9 = new  CKey(Keys.F9);
        public static CKey F10 = new  CKey(Keys.F10);
        public static CKey F11 = new  CKey(Keys.F11);
        public static CKey F12 = new  CKey(Keys.F12);
        public static CKey F13 = new  CKey(Keys.F12);
        public static CKey F14 = new  CKey(Keys.F13);
        public static CKey F15 = new  CKey(Keys.F14);
        public static CKey F16 = new  CKey(Keys.F15);
        public static CKey F17 = new  CKey(Keys.F16);
        public static CKey F18 = new  CKey(Keys.F17);
        public static CKey F19 = new  CKey(Keys.F18);
        public static CKey F20 = new  CKey(Keys.F20);
        public static CKey F21 = new  CKey(Keys.F21);
        public static CKey F22 = new  CKey(Keys.F22);
        public static CKey F23 = new  CKey(Keys.F23);
        public static CKey F24 = new  CKey(Keys.F24);
        public static CKey G = new  CKey(Keys.G);
        public static CKey H = new  CKey(Keys.H);
        public static CKey Help = new  CKey(Keys.Help);
        public static CKey Home = new  CKey(Keys.Home);
        public static CKey I = new  CKey(Keys.I);
        public static CKey ImeConvert = new  CKey(Keys.ImeConvert);
        public static CKey ImeNoConvert = new  CKey(Keys.ImeNoConvert);
        public static CKey Insert = new  CKey(Keys.Insert);
        public static CKey J = new  CKey(Keys.J);
        public static CKey K = new  CKey(Keys.K);
        public static CKey Kana = new  CKey(Keys.Kana);
        public static CKey Kanji = new  CKey(Keys.Kanji);
        public static CKey L = new  CKey(Keys.L);
        public static CKey LaunchApplication1 = new  CKey(Keys.LaunchApplication1);
        public static CKey LaunchApplication2 = new  CKey(Keys.LaunchApplication2);
        public static CKey LaunchMail = new  CKey(Keys.LaunchMail);
        public static CKey Left = new  CKey(Keys.Left);
        public static CKey LeftAlt = new  CKey(Keys.LeftAlt);
        public static CKey LeftControl = new  CKey(Keys.LeftControl);
        public static CKey LeftShift = new  CKey(Keys.LeftShift);
        public static CKey LeftWindows = new  CKey(Keys.LeftWindows);
        public static CKey M = new  CKey(Keys.M);
        public static CKey MediaNextTrack = new  CKey(Keys.MediaNextTrack);
        public static CKey MediaPlayPause = new  CKey(Keys.MediaPlayPause);
        public static CKey MediaPreviousTrack = new  CKey(Keys.MediaPreviousTrack);
        public static CKey MediaStop = new  CKey(Keys.MediaStop);
        public static CKey Multiply = new  CKey(Keys.Multiply);
        public static CKey N = new  CKey(Keys.N);
        public static CKey None = new  CKey(Keys.None);
        public static CKey NumLock = new  CKey(Keys.NumLock);
        public static CKey NumPad0 = new  CKey(Keys.NumPad0);
        public static CKey NumPad1 = new  CKey(Keys.NumPad1);
        public static CKey NumPad2 = new  CKey(Keys.NumPad2);
        public static CKey NumPad3 = new  CKey(Keys.NumPad3);
        public static CKey NumPad4 = new  CKey(Keys.NumPad4);
        public static CKey NumPad5 = new  CKey(Keys.NumPad5);
        public static CKey NumPad6 = new  CKey(Keys.NumPad6);
        public static CKey NumPad7 = new  CKey(Keys.NumPad7);
        public static CKey NumPad8 = new  CKey(Keys.NumPad8);
        public static CKey NumPad9 = new  CKey(Keys.NumPad9);
        public static CKey O = new  CKey(Keys.O);
        public static CKey Oem8 = new  CKey(Keys.Oem8);
        public static CKey OemAuto = new  CKey(Keys.OemAuto);
        public static CKey OemBackslash = new  CKey(Keys.OemBackslash);
        public static CKey OemClear = new  CKey(Keys.OemClear);
        public static CKey OemCloseBrackets = new  CKey(Keys.OemCloseBrackets);
        public static CKey OemComma = new  CKey(Keys.OemComma);
        public static CKey OemCopy = new  CKey(Keys.OemCopy);
        public static CKey OemEnlW = new  CKey(Keys.OemEnlW);
        public static CKey OemMinus = new  CKey(Keys.OemMinus);
        public static CKey OemOpenBrackets = new  CKey(Keys.OemOpenBrackets);
        public static CKey OemPeriod = new  CKey(Keys.OemPeriod);
        public static CKey OemPipe = new  CKey(Keys.OemPipe);
        public static CKey OemPlus = new  CKey(Keys.OemPlus);
        public static CKey OemQuestion = new  CKey(Keys.OemQuestion);
        public static CKey OemQuotes = new CKey(Keys.OemQuotes);
        public static CKey OemSemicolon = new  CKey(Keys.OemSemicolon);
        public static CKey OemTilde = new  CKey(Keys.OemTilde);
        public static CKey P = new  CKey(Keys.P);
        public static CKey Pa1 = new  CKey(Keys.Pa1);
        public static CKey PageDown = new  CKey(Keys.PageDown);
        public static CKey Pause = new  CKey(Keys.Pause);
        public static CKey PageUp = new  CKey(Keys.PageUp);
        public static CKey Play = new  CKey(Keys.Play);
        public static CKey Print = new  CKey(Keys.Print);
        public static CKey PrintScreen = new  CKey(Keys.PrintScreen);
        public static CKey ProcessKey = new  CKey(Keys.ProcessKey);
        public static CKey Q = new  CKey(Keys.Q);
        public static CKey R = new  CKey(Keys.R);
        public static CKey Right = new  CKey(Keys.Right);
        public static CKey RightAlt = new  CKey(Keys.RightAlt);
        public static CKey RightControl = new  CKey(Keys.RightControl);
        public static CKey RightShift = new  CKey(Keys.RightShift);
        public static CKey RightWindows = new  CKey(Keys.RightWindows);
        public static CKey S = new  CKey(Keys.S);
        public static CKey Scroll = new  CKey(Keys.Scroll);
        public static CKey Select = new  CKey(Keys.Select);
        public static CKey SelectMedia = new  CKey(Keys.SelectMedia);
        public static CKey Separator = new  CKey(Keys.Separator);
        public static CKey Sleep = new  CKey(Keys.Sleep);
        public static CKey Space = new  CKey(Keys.Space);
        public static CKey Subtract = new  CKey(Keys.Subtract);
        public static CKey T = new  CKey(Keys.T);
        public static CKey Tab = new CKey(Keys.Tab);
        public static CKey U = new  CKey(Keys.U);
        public static CKey Up = new  CKey(Keys.Up);
        public static CKey V = new  CKey(Keys.V);
        public static CKey VolumeDown = new  CKey(Keys.VolumeDown);
        public static CKey VolumeMute = new  CKey(Keys.VolumeMute);
        public static CKey VolumeUp = new  CKey(Keys.VolumeUp);
        public static CKey W = new  CKey(Keys.W);
        public static CKey X = new  CKey(Keys.X);
        public static CKey Y = new  CKey(Keys.Y);
        public static CKey Z = new  CKey(Keys.Z);
        public static CKey Zoom = new  CKey(Keys.Zoom);
        #endregion

        #region Update
        public static void Update()
        {
            A.Update();
	        Add.Update();
	        Apps.Update();
	        Attn.Update();
	        B.Update();
	        Back.Update();
	        BrowserBack.Update();
	        BrowserFavorites.Update();
	        BrowserForward.Update();
	        BrowserHome.Update();
	        BrowserRefresh.Update();
	        BrowserSearch.Update();
	        BrowserStop.Update();
	        C.Update();
	        CapsLock.Update();
	        ChatPadGreen.Update();
	        ChatPadOrange.Update();
	        Crsel.Update();
	        D.Update();
	        D0.Update();
	        D1.Update();
	        D2.Update();
	        D3.Update();
	        D4.Update();
	        D5.Update();
	        D6.Update();
	        D7.Update();
	        D8.Update();
	        D9.Update();
	        Decimal.Update();
	        Delete.Update();
	        Divide.Update();
	        Down.Update();
	        E.Update();
	        End.Update();
	        Enter.Update();
	        EraseEof.Update();
	        Escape.Update();
	        Execute.Update();
	        Exsel.Update();
	        F.Update();
	        F1.Update();
	        F10.Update();
	        F11.Update();
	        F12.Update();
	        F13.Update();
	        F14.Update();
	        F15.Update();
	        F16.Update();
	        F17.Update();
	        F18.Update();
	        F19.Update();
	        F2.Update();
	        F20.Update();
	        F21.Update();
	        F22.Update();
	        F23.Update();
	        F24.Update();
	        F3.Update();
	        F4.Update();
	        F5.Update();
	        F6.Update();
	        F7.Update();
	        F8.Update();
	        F9.Update();
	        G.Update();
	        H.Update();
	        Help.Update();
	        Home.Update();
	        I.Update();
	        ImeConvert.Update();
	        ImeNoConvert.Update();
	        Insert.Update();
	        J.Update();
	        K.Update();
	        Kana.Update();
	        Kanji.Update();
	        L.Update();
            LaunchApplication1.Update();
	        LaunchApplication2 .Update();
	        LaunchMail.Update();
	        Left .Update();
	        LeftAlt .Update();
	        LeftControl .Update();
	        LeftShift .Update();
	        LeftWindows.Update();
	        M.Update();
	        MediaNextTrack.Update();
	        MediaPlayPause.Update();
	        MediaPreviousTrack.Update();
	        MediaStop.Update();
	        Multiply .Update();
	        N.Update();
	        None.Update();
	        NumLock.Update();
	        NumPad0.Update();
	        NumPad1.Update();
	        NumPad2.Update();
	        NumPad3.Update();
	        NumPad4.Update();
	        NumPad5.Update();
	        NumPad6.Update();
	        NumPad7.Update();
	        NumPad8.Update();
	        NumPad9.Update();
	        O.Update();
	        Oem8.Update();
	        OemAuto .Update();
	        OemBackslash .Update();
	        OemClear.Update();
	        OemCloseBrackets.Update();
	        OemComma .Update();
	        OemCopy .Update();
	        OemEnlW.Update();
	        OemMinus.Update();
	        OemOpenBrackets.Update();
	        OemPeriod.Update();
	        OemPipe.Update();
	        OemPlus.Update();
	        OemQuestion.Update();
	        OemQuotes.Update();
	        OemSemicolon.Update();
	        OemTilde.Update();
	        P.Update();
	        Pa1.Update();
	        PageDown.Update();
	        PageUp.Update();
	        Pause.Update();
	        Play.Update();
	        Print.Update();
	        PrintScreen.Update();
	        ProcessKey.Update();
	        Q.Update();
	        R.Update();
	        Right.Update();
	        RightAlt.Update();
	        RightControl.Update();
	        RightShift.Update();
	        RightWindows.Update();
	        S.Update();
	        Scroll.Update();
	        Select.Update();
	        SelectMedia.Update();
	        Separator.Update();
	        Sleep.Update();
	        Space.Update();
	        Subtract.Update();
	        T.Update();
	        Tab.Update();
	        U.Update();
	        Up.Update();
	        V.Update();
	        VolumeDown.Update();
	        VolumeMute.Update();
	        VolumeUp.Update();
	        W.Update();
	        X.Update();
	        Y.Update();
	        Z.Update();
	        Zoom.Update();
        }
        #endregion
    }
}

//▄██████████████▄ ▐█▄▄▄▄█▌
//██████▌▄▌▄▐▐▌███▌ ▀▀██▀▀
//████▄█▌▄▌▄▐▐▌▀███ ▄▄█▌
//▄▄▄▄▄██████████████▀ spread the fail whale